// ------------------------ 提示窗口 ------------------------- 参数 msg 必要， title 可选
function sysShowTip( msg , title ){

	//layer.alert( msg , {icon: 6} );		//笑脸
	//layer.alert( msg , {icon: 5} );	//哭脸
	//layer.alert( msg , {icon: 4} );	//锁 
	//layer.alert( msg , {icon: 3} );//warning
	//layer.alert( msg , {icon: 2} ); //error    1 : success
	if( title ==null ){
		title = commonI18n.Information;
	}
	layer.alert( msg , { title: title , btn:[ commonI18n.OK ] } ); 
}

function sysShowSuccessTip( msg , title ,  callBack){
	if( title ==null ){
		title = commonI18n.Information;
	}
	layer.alert( msg , {icon: 1 , title: title , btn:[ commonI18n.OK ] }  ,  callBack); 
}

function sysShowWarningTip( msg , title ,  callBack ){
	if( title ==null ){
		title = commonI18n.Warning;
	}
	layer.alert( msg ,{icon: 3 , title: title , btn:[ commonI18n.OK ] } , callBack ); 
}

/**
 * 
 * @param msg 错误信息
 * @param title	标题 
 * @param callBack	确定后回调
 */
function sysShowErrorTip( msg , title  , callBack){
	if( title ==null ){
		title = commonI18n.Error;
	}
	layer.alert( msg , {icon: 2 , title: title , btn:[ commonI18n.OK ] } ,callBack); 
}
//------------------------ 提示窗口 End-------------------------
/**
 * yesCallBack 选择yes 的回调 不能为null
 * noCallBack 选择no 的回调 可以为 null
 * 	centerMsg 提示信息	必要
 * btnStrs 按钮的文字， 可以不传
 */
function sysShowConfirm( yesCallBack , noCallBack , centerMsg ,  btnStrs ){
	if( btnStrs == null ){
		btnStrs = [  commonI18n.Yes  ,  commonI18n.No   ];
	}
	function yesCallBackInner(index ){
		layer.close(index);
		yesCallBack();
	}
	var noCallBackInner = null;
	if( noCallBack==null ){
		noCallBackInner = function ( index ){
			layer.close(index);
		}
	}else{
		noCallBackInner = function ( index ){
			layer.close(index);
			noCallBack();
		}
	}
	var tmpIndex = layer.confirm(
			centerMsg, 
			{ btn: btnStrs , title : commonI18n.Information },
			yesCallBackInner  ,
			noCallBackInner
	);
	
}

/**
 * yesCallBack 输入完成后确定的回调
 * titleMsg 提示信息
 * isCloseByHand 是否手动关闭
 */
function sysShowInput(  yesCallBack  , titleMsg , isCloseByHand){
//prompt风格，支持0-2  text  , pass,  msg
	var btnStrs = [  commonI18n.OK  ,  commonI18n.Cancel   ];
	layer.prompt({
			title : titleMsg,
			formType : 0 , btn: btnStrs
		}, function( msg , index) {
			if( isCloseByHand ){
				
			}else{
				layer.close(index);
			}
			yesCallBack(msg , index);
		});
}

var __loadingIndex = -1;
function sysShowGlobalLoading(){
	if( __loadingIndex == -1 ){
		__loadingIndex = layer.load(2);
	}
}
function sysHideGlobalLoading(){
	if(  __loadingIndex != -1){
		layer.close( __loadingIndex );
		__loadingIndex = -1;
	}
}

function getCanUseHeight(){
	var headerHeight =$("#header").height();
	var footerHeight =$("#footer").height();
	var bcHeight =$("#breadcrumbDiv").height();
	var windowHeight = $(window).height(); 
	return windowHeight - bcHeight - footerHeight - headerHeight;
}

/*****************************************************************
 jQuery Ajax封装通用类	 ,处理 登陆超时  与无权访问等
 *****************************************************************/
	$(function() {
		/**
		 * ajax封装
		 * url 发送请求的地址
		 * data 发送到服务器的数据，数组存储，如：{"date": new Date().getTime(), "state": 1}
		 * async 默认值: true。默认设置下，所有请求均为异步请求。如果需要发送同步请求，请将此选项设置为 false。
		 *       注意，同步请求将锁住浏览器，用户其它操作必须等待请求完成才可以执行。
		 * type 请求方式("POST" 或 "GET")， 默认为 "GET"
		 * dataType 预期服务器返回的数据类型，常用的如：xml、html、json、text
		 * successfn 成功回调函数
		 * errorfn 失败回调函数
		 */
		jQuery.sysAjaxAll = function(url, data, async, type, dataType,
				successfn, errorfn) {
			async = (async == null || async == "" || typeof (async) == "undefined") ? "true"
					: async;
			type = (type == null || type == "" || typeof (type) == "undefined") ? "post"
					: type;
			dataType = (dataType == null || dataType == "" || typeof (dataType) == "undefined") ? "json"
					: dataType;
			data = (data == null || data == "" || typeof (data) == "undefined") ? {
				"date" : new Date().getTime()
			}
					: data;

			$.ajax({
				type : type,
				async : async,
				data : data,
				url : url,
				dataType : dataType,
				success : function(d) {
					nmsHideGlobalLoading();
					if (d._noLogin_) {
						nmsShowTip(commonI18n.Need_relogin);
						_showLoginModal();
						d = {result : false };
						return;
					}
					if(d.kick_out){
						nmsShowTip(commonI18n.kick_out);
						d = {result : false };
						return;
					}
					if (d._noPermit_) {
						nmsShowWarningTip(commonI18n.No_permit);
						d = {result : false };
						return;
					}
					if(  d._serverError_ ){
						nmsShowErrorTip(commonI18n.Server_error);
						return ;
					}
					if( d.errorMsg ){
						if(""!=d.errorMsg)
							nmsShowErrorTip( d.errorMsg );
						else
							nmsShowErrorTip( commonI18n.Server_error );
						d = {result : false };
						return;
					}
					successfn(d);
				},
				error : function(e) {
					nmsHideGlobalLoading();
					errorfn(e);
				}
			});
		};

		/**
		 * ajax封装
		 * url 发送请求的地址
		 * data 发送到服务器的数据，数组存储，如：{"date": new Date().getTime(), "state": 1}
		 * successfn 成功回调函数
		 * errorfn 失败回调函数	可选
		 */
		jQuery.sysAjax = function(url, data, successfn, errorfn) {

			errorfn = (errorfn == null || typeof (errorfn) == "undefined") ? defaultAjaxErrorHandler
					: errorfn;

			$.ajax({
				type : "post",
				data : data,
				url : url,
				dataType : "json",
				success : function(d) {
					sysHideGlobalLoading();
					if (d._noLogin_) {
						sysShowTip(commonI18n.Need_relogin);
						_showLoginModal();
						d = {result : false };
						return;
					}
					if(d.kick_out){
						sysShowTip(commonI18n.kick_out);
						d = {result : false };
						return;
					}
					if (d._noPermit_) {
						sysShowWarningTip(commonI18n.No_permit);
						d = {result : false };
						return;
					}
					if(  d._serverError_ ){
						sysShowErrorTip(commonI18n.Server_error);
						return ;
					}
					if( d.errorMsg ){
						if(""!=d.errorMsg)
							sysShowErrorTip( d.errorMsg );
						else
							sysShowErrorTip( commonI18n.Server_error );
						d = {result : false };
						return;
					}
					successfn(d);
				},
				error : function(e) {
					sysHideGlobalLoading();
					errorfn(e);
				}
			});
		};

		function defaultAjaxErrorHandler(error) {
			sysShowErrorTip(commonI18n.Server_error);
		}

	});
	
function sysGetTopLayer(){
	var topParentObj = parent;
	var retLayer = layer;
	
	for( var i=0; i<10 ;i++ ){
		if( topParentObj == null ){
			return retLayer;
		}else{
			topParentObj = topParentObj.parent;
			retLayer = topParentObj.layer;
		}
	}
	return retLayer;
}

function _showLoginModal(){
	layer.closeAll();
	layer.open({
		type : 1,
		title : commonI18n.Need_relogin,
		shadeClose : true,
		area : [ '350px', '220px' ],
		content : $('#reLogin'),
	});
	$('#userName_reLogin').val("");
	$('#password_reLogin').val("");
}	

function sysGetTopWindow(){
	
	var topParentObj = parent;
	
	for( var i=0; i<10 ;i++ ){
		if( topParentObj == null ){
			return window;
		}else{
			topParentObj = topParentObj.parent;
		}
	}
	return topParentObj.window;
}

var _sysObj = {}
_sysObj.language = function(lang) {
	var url = "language";
	var data = {
		language : lang
	};
	var successCallBack = function(data) {
		if (data.result) {
			//刷新页面
			if (window.location.href != top.location.href) {
				top.location.href = top.location.href;
			} else {
				window.location.href = window.location.href;
			}
		}
	}
	$.sysAjax(url, data, successCallBack);
}
_sysObj.relogin=function(){
	var url = '/relogin';
	var data = {
		username :$('#userName_reLogin').val(),
		password :$('#password_reLogin').val(),
	};
	var successCallBack = function(data) {
		if (data.result == true) {
			layer.closeAll();
			$("#shiroSessionId").val(data.sid)
			footerFault.connectWebSocket();
			sysShowSuccessTip(commonI18n.Login_success);
		} else
			sysShowErrorTip(commonI18n.Password_Error);
	};
	$.sysAjax(url, data, successCallBack);
}

_sysObj.logOut = function() {
	var url = "logOut";
	var data = {};
	var successCall = function(data) {
		if (data.result) {
			top.location.href = top.location.href;
		} else {
			sysShowErrorTip(commonI18n.failTip);
		}
	}
	$.sysAjax(url, data, successCall);
}


_getWebSocketUrl = function(){
	
     var serverName = document.domain;
	 var aaa = "wss://"+serverName+":8443/sysMsgServer";
	 return aaa;
	 
}

